package com.neouton.crm.dictionary.mapper;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.neouton.crm.dictionary.entity.DictionaryLookupItemVO;
import com.neouton.crm.dictionary.entity.DictionaryLookupVO;
import com.neouton.crm.dictionary.entity.SysMenuVO;
import com.neouton.crm.entity.SysUserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface DictionaryMapper {

    /**
     * 查询数据字典列表
     *
     * @param page
     * @param dataDictionaryLookup
     * @return
     */
    IPage<DictionaryLookupVO> queryDictionarysByPage(@Param("page")IPage page, @Param("dataDictionaryLookup") DictionaryLookupVO dataDictionaryLookup);


    /**
     * 查询数据字典信息
     *
     * @param classfiedCode
     * @return
     */
    List<DictionaryLookupItemVO> queryLookupItemInfo(@Param("status")Integer status, @Param("list") List<String> classfiedCode);


    /**
     * 保存数据字典详情信息
     *
     * @param dataDictionaryLookupId
     * @param dictionaryLookupItem
     */
    Boolean insertDictionaryLookupItem(@Param("dataDictionaryLookupId")Integer dataDictionaryLookupId,@Param("list") List<DictionaryLookupItemVO> dictionaryLookupItem);


    /**
     * 查询数据字典列表
     *
     * @param page
     * @param sysMenuVO
     * @return
     */
    IPage<SysMenuVO> queryCrmAdminByPage(@Param("page")IPage page, @Param("sysMenu") SysMenuVO sysMenuVO);

    /**
     * 获取管理员集合
     * @param menuCode
     * @return
     */
    List<SysUserEntity> queryMenuUserIdsByCode(@Param("menuCode")String menuCode);


    Boolean saveMenuUserIds(@Param("menuId")Integer menuId,
                            @Param("users") List<SysUserEntity> users,
                            @Param("creatorId") Integer creatorId);

    /**
     * 查询是否为管理员
     * @return
     */
    Boolean queryIsMenuUserByUserId();


    /**
     * 查询数据字典列表
     *
     * @param page
     * @param sysMenuVO
     * @return
     */
    IPage<SysMenuVO> queryCrmCcByPage(@Param("page")IPage page, @Param("sysMenu") SysMenuVO sysMenuVO);

    /**
     * 获取管理员集合
     * @param eventCode
     * @return
     */
    List<SysUserEntity> queryCcUserIdsByCode(String eventCode);

    /**
     * 报错抄送人信息
     */
    Boolean saveCcUserIds(@Param("eventId")Integer eventId ,
                          @Param("users") List<SysUserEntity> users,
                          @Param("creatorId") Integer creatorId);

    IPage<SysMenuVO> queryCrmAuthByPage(@Param("page")IPage page, @Param("sysMenu") SysMenuVO sysMenuVO);

    List<SysUserEntity> queryAuthUserIdsByCode(String authCode);

    Boolean saveAuthUserIds(@Param("authManageId")Integer authManageId ,@Param("users") List<SysUserEntity> users,@Param("creatorId") Integer creatorId);

    void delectCrmCcUserByInvalidUsers(@Param("userList") List<SysUserEntity> invalidUsers);
}
